<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>007 出现最多</title>
</head>
<body>

  <h1>007 出现最多</h1>
  <p>获取字符串中，出现次数最多的字符，得到次数</p>
  <p>如 "afabbfccff"，"f" 是出现最多的字符，出现了 4 次</p>

  <form id="myform" method="get">
    <input type="text" name="str" value="afabbfccff" placeholder="请随机输入字符...">
    <input type="submit" value="走你">
  </form>

  <script>

    document.getElementById("myform").addEventListener("submit", function(e) {

      //阻止默认提交行为.
      e.preventDefault();

      var str = this.str.value;
      var obj = {};
      var max = 0;
      var result = [];

      //利用 obj 键值对特性，将字符作为唯一 key 来存储次数.
      str.replace(/./g, function(t) {
        obj[t] = obj[t] != undefined ? obj[t] + 1 : 1;
      });

      //找出 obj 里，值最大的，并且存储键值对.
      for (var p in obj) {
        if( obj[p] > max ) {
          //更新最大标记.
          max = obj[p];
          //存储最大结果.
          result[0] = p;
          result[1] = obj[p];
        }
      }

      alert(result[0] + " 出现次数最多，共出现了 " + result[1] + " 次");

    }, false);
  </script>

</body>
</html>
